package com.itaming.lycheeframework.core.formatter;

import com.itaming.lycheeframework.support.utils.DateTimeUtil;
import org.springframework.format.Formatter;
import org.springframework.lang.NonNull;

import java.text.ParseException;
import java.time.LocalDate;
import java.util.Locale;

/**
 * {@code LocalDate} 格式化器
 *
 * @author A.Ming
 */
public class LocalDateFormatter implements Formatter<LocalDate> {

    /**
     * 解析
     *
     * @param text   待解析的文本
     * @param locale 语言环境
     * @return {@link LocalDate}
     * @throws ParseException
     */
    @Override
    @NonNull
    public LocalDate parse(@NonNull String text, @NonNull Locale locale) throws ParseException {
        try {
            return DateTimeUtil.parseLocalDate(text);
        } catch (Exception e) {
            throw new ParseException(e.getMessage(), 0);
        }
    }

    /**
     * 格式化
     *
     * @param object 待格式化的对象
     * @param locale 语言环境
     * @return 格式化后的字符串
     */
    @Override
    @NonNull
    public String print(@NonNull LocalDate object, @NonNull Locale locale) {
        return DateTimeUtil.formatDate(object);
    }

}
